package com.ryder.petmatediarybackend.common.exception;

import com.ryder.petmatediarybackend.common.enums.ResultCode;
import lombok.Getter;

/**
 * 描述: 业务异常（遵循阿里规范）
 *
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025/10/28
 */
@Getter
public class BusinessException extends RuntimeException {

    /**
     * 错误码
     */
    private final Integer code;

    /**
     * 构造方法（使用默认业务错误码）
     */
    public BusinessException(String message) {
        super(message);
        this.code = ResultCode.BUSINESS_ERROR.getCode();
    }

    /**
     * 构造方法（使用枚举）
     */
    public BusinessException(ResultCode resultCode) {
        super(resultCode.getMessage());
        this.code = resultCode.getCode();
    }

    /**
     * 构造方法（使用枚举 + 自定义消息）
     */
    public BusinessException(ResultCode resultCode, String customMessage) {
        super(customMessage);
        this.code = resultCode.getCode();
    }

    /**
     * 构造方法（自定义状态码和消息）
     */
    public BusinessException(Integer code, String message) {
        super(message);
        this.code = code;
    }
}
